public class Date {
    public int year;
    public int month;
    public int day;
    //public boolean name;
//默认初始化 为对应类型的0值，
//引用类型是null；布尔类型是false

//    public int year = 2024;//就地初始化
//    public int month = 11;
//    public int day = 13;

    //this.year;//err，this只能在成员方法内使用

//    public void setDate(int year, int month, int day) {
//        year = year;//局部变量优先使用
//        month = month;//全都是局部变量，局部变量自己给自己赋值
//        day = day;//err
//    }


//    public void setDate(/*Date this,*/int y, int m, int d) {
//        this.year = y;//this代表当前对象的引用
//        this.month = m;//哪个对象调用了当前方法，this就指向哪个对象
//        this.day = d;
//    }


//    public Date() {
//
//    }//编译器提供的构造方法（默认的）

    public Date() {//无参构造方法(无返回值)——初始化成员变量
//        this.year = 2024;
//        this.month = 11;
//        this.day = 12;
        //this()必须在方法的第一行
        this(2024, 11, 12);//this()可以调用当前对象的其他构造方法
        System.out.println("Date()");
    }

//    public Date(int year, int month, int day) {//有参构造方法——初始化成员变量
//        this.year = year;
//        this.month = month;
//        this.day = day;
//        System.out.println("Date(int, int, int)");
//    }//构造方法重载


    public Date(int year, int month, int day) {
        //this();//err 不能形成环
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("Date(int, int, int)");
    }//自动生成构造方法：鼠标右键->Generate->Constructor

    public void setDate(int year, int month, int day) {
        this.year = year;//对象year和局部year区分开了
        this.month = month;
        this.day = day;
    }

    public void printDate() {
        System.out.println(this.year + "年" + this.month
                + "月" + this.day + "日");
    }

    public void show() {
        this.printDate();
    }
    //this的使用有三种方式：
    //1.this.date 访问当前对象的成员变量；
    //2.this.func() 访问当前对象的成员方法
}
